function Observe (data, vm) {
  const dep = new Dep()
  return new Proxy(vm, {
    get(target, key) {
      const depTarget = Dep.target
      depTarget && dep.addSub(depTarget)
      return data[key]
    },
    set(target, key, val) {
      const _val = data[key]
      if (val === _val) return _val
      data[key] = val
      dep.notify()
    }
  })
}